package errorybxb

import (
	"fmt"
	"net/http"
)

// Go语言中的Error等价于Java中的Exception
// Error的处理方式1
func TestError1() {
	// Error处理方式1
	// 注意：在Go语言中，有error一定要出处理error
	url := "https://www.baidu.com"
	var resp, err = http.Get(url)
	// err为空的情况下，就一定会等于nil, err为空，就表示没有报错
	if err != nil {
		fmt.Printf("err的类型是:%T, 值是:%v", err, err) // 发生错误
		// 打印：err的类型是:*url.Error, 值是Get "http://www.abc112121.com": dial tcp: lookup www.abc112121.com: no such host<nil>
	}
	fmt.Println(resp) // 未发生错误
}

// Error处理方式2
// 注意：在Go语言中，有Error一定要出处理Error
func TestError2() {
	var url = "http://www.abc112121.com"
	// 错误处理方式2：
	if _, err := http.Get(url); err != nil {
		fmt.Printf("err的类型是:%T, 值是:%v", err, err) // 发生错误
	}
	// fmt.Println(err) // 注意：在这里err变量是无效的。
	fmt.Println("---end---")
	// if语句块中的"_"表示忽略指定的返回值
}

// 两种方式的区别是：err变量的作用域，第一种是TestError1整个函数内有效，第二种是if语句块中有效
